查看原文
其他

架构蓝图 | 优雅de数据仓库工作杂谈

数据仓库与分析 数据仓库与Python大数据 2022-08-17

来源:数据仓库与分析



1


数仓工作是一个系统工作,涉及到的内容和技能很多,从分工来说分为ETL、模型、应用、离线、实时、规范、平台、工具、产品、交互、保障、数据体系等等各个方面。从整体结构上来说,很多年都没有变化了,但是具体实现技术却是日新月异。

本文将作为一个新的系列文章,记录日常碰见的问题,以及自己的思考。

整体框架

    上图是常见数据系统的整体框架,当然不同的公司或多或少缺少些组件,这些不影响仓库的好坏。

    一个好的仓库,要有优秀的规范,要有好的模型,更重要的是日常管理。

    在券商或者基金应该主要是靠供应商来实现,这种结果导致的弊端是仓库极度不自主,而且供应商的人员参差不齐,难以管理。更主要的是很多甲方人员退化为眼高手低的角色。

ETL工作

    这块工作很重要,占比也是很大,出现的问题也是最多的,常见的问题如下:

  1. 数据晚到,但是不报错

  2. 数据不到

  3. 数据有乱码,换行等文件

  4. 一天需要多个批次

  5. 频繁需要手工补数

  6. 表结构经常变更

  7. 调度管理

  8. 源系统,目标系统对应关系

    下面对各个问题进行分析。

01

01

源系统问题

   问题1、2、3是频发问题,因为对应仓库来说,源系统太多了,总有这种那种问题的,这里也没有好的解决方案,总的来说就是监控加管理吧!

    监控是有必要的,毕竟仓库批量的时间窗口有限,有问题要及时处理,从这个角度来说数据仓库的从业人员还是比较辛苦的!

    针对数据晚到,还有一种方法,就是拆分,ETL作业拆分的越细,可以让先到的先跑,后到的后跑,这样晚到的作业影响的越小,只是这样必须对仓库的整个依赖要有一个清晰的了解,漏依赖或者多依赖对仓库跑批都有很大的影响。

    数据不到这种情况,也是有的,只有催数据了,就需要做一个模板,各个系统常到的时间节点,比如节点加上最早达到时间,最迟到达时间,到达时间中位数信息等等。超过最迟时间要报警通知处理了。

    数据乱码,换行等特殊字符问题,一方面使用国际通用编码UTF8,其他编码比如GBK和GB2312也是常用的编码,但是对汉字或者字符的覆盖不是那么全面。

    这里还是一个管理问题,比如规定源系统的问题归源系统解决,那么换行,乱码很多问题都是源系统解决,源系统作为数据来源,在数据入库的过程中进行过滤处理。

02

01

调度问题

     ETL的需求多种多样,有的需要一天跑一次,有的需要根据标志来采集推送,有的需要,有的需要一天采集多次,有的需要按需采集推送;

    作为ETL工作,一般承当离线的数据,要求按需采集其实需求是不合理。

    所以目前出现的问题理论上都是管理问题,应该在实时方式实现。

     当然,这些问题要实现也是可以的,需要提供自定义的接口实现。

03

01

管理问题

    目前,工作量最大的是表结构变化产生的影响,这一块最好的方法就是管控起来;使用一个小组实现集团级的表结构管控和审批,每次变更进行申请,审核通过后及时的通知下游。

   频繁的补数其实是更大的管理问题,理论上数据推送到目标后,目标系统第一步就是备份,数据的补录理论上是出现大的生产事故。

   比较好的方案是每周做一个数据质量报告,汇报补数的情况。

模型问题

   根据文章前面的总图,ETL工作其实就是采集源系统的信息,推送到数据仓库的原始数据层;数据的采集只是开始,数据仓库的很多重点工作都在模型。

01

01

模型基本设计

    在模型设计上,有很多方法,比如ER建模,维度建模,阿里的onedata建模方法等等;

   在建模方法上有些区别,业务快速发展的公司或者行业适合维度建模,稳定的金融公司ER建模比较多点。常见的模型设计更多的根据实际情况融合两种建模方法。

    阿里的onedate采取类似从上到下的方式,先划分数据域,再拆分数据域中的业务过程,明确可分析维度,最后根据业务过程和可分析维度构建总线矩阵,如下所示。

02

01

维度与指标

    指标,是衡量事务发展程度的单位和方法,通常需要经过加和、平均等聚合统计才能得到,并且是在一定条件下的。比如在互联网中常用的UV/PV,页面停留时长,用户获取成本,就是指标;

    维度,是事务现象的某种特征,如性别,地区,时间都是维度。比如地域,版本,操作系统等都是维度;

   模型设计中拆分好维度后接着分析指标。

03

01

数据指标设计

    参考数据仓库之仓库指标体系,对指标有一个基本的介绍,在设计指标的过程中,不仅要熟悉一点业务过程,还要对整个仓库有很熟悉的了解。

    指标,最好是得到业务认可的指标是事半功倍的,根据第二点,不同的维度下面都有指标,有的指标名称都是一样的,只是所属维度不同,那么构建⼀致性维度或者一致性指标就很重要了。指标的作用如下:

  1. 衡量业务发展质量    

  2. 建立指标因果关系  

  3. 指导用户分析工作  

  4. 指导基础数据建设  

  5. 指导内容产品建设

  6. 统一指标消费口径

    相关的方法论或者实践可以参考滴滴的

滴滴数据仓库指标体系建设实践

04

01

模型数据标准

    模型的数据标准,可以参考之前写的文章数据仓库之仓库基础数据标准,这里额外强调3点:

  1. 模型的数据标准里面,需要规定常见字段中英文对照关系。同样是账户,建表的时候使用的英文千差万别,提供这样一个对照表,尽可能的规范化。

  2. 数据仓库的表名需要有一定的命名规则,比如ODS_业务系统数据库名_业务系统数据库表名.

  3. 编码标准与规则至关重要,码表多且繁杂,但是非常有用;如果不能好好管理,后期使用起来又很不方便。

05

01

模型的管理工具

    模型是需要好好管理的,内容太多太杂。管理过程也是自上向下的,包括域管理,维度管理、度量和字段基础字典的管理,同时具备模型设计审批流程的控制。



2


上文中ETL问题谈到文件的加载,模型问题谈模型设计和管理,模型往上,就是轻度汇总层

轻度汇总层

    好的仓库还是靠模型,模型的工作量也是最大的,根据主题域或者业务域对域内的信息进行归纳整理,其实也是部分指标开发的原始工作。

01

01

轻度汇总的目的

    轻度汇总在很多小的公司,可以没有必要存在,因为相关的工作在模型层已经做了;基本上大部分公司没必要做。

    轻度汇总主要是做一些公共的,可以复用的计算,供上层使用,所以主要目的还是复用。

     这里要注意的是,不要给模型使用,而是给上层使用;要保证依赖是底层往上的,而不是可以形成闭环的。

02

01

轻度汇总的设计开发

    轻度汇总的原表最好来源于模型表,极少部分来源原始数据层,这个必须管控好;

     日常开发,所有的业务都可以取原始数据层的,这样可能开发显的更加快。从单个作业的角度,的确可能存在的,从仓库整体的角度是非常不利的,造成的结果是积重难返,直接绕开了模型。对于上层应用来说最好使用模型。

集市层

    集市层的存在,主要是方便应用,一个应用可能需要很多列数据,而模型或者汇总层一般需要关联操作,这样就显得比较慢。

01

01

集市的目的

    从我的角度看,集市的目的就是空间换时间,比如客户集市,就是开发客户的各种各样的大宽表,对外提供数据。

02

01

集市的设计

    集市内部也不仅仅是大宽表,如果是这样,列的长度就不能限制了;还有不同的大宽表都有很多重复的列,不可能不加以限制吧。

    集市表的设计方面,更多的根据需求来。但是也需要抓住核心,主表附表要设计好。

仓库验证

    现在仓库大概的雏形搭建出来了,那么模型或者仓库的设计合理吗?如何判断是否合理呢!

    有一个很好的办法就是访问统计。

01

01

完善度

    完善度关注什么呢!首先就是跨层引用的情况,一般业务依赖是一层一层的,集市访问模型可以理解,访问原始数据层过多是有很大问题的,当然访问模型比例过大也是有问题的,说明轻度汇总做的不够。

    要知道汇总数据查询的够不够,其实就是看需要汇总的业务查询的依赖中是否使用轻度汇总层的表。

02

01

复用情况

    下图就是复用较差的模型和仓库设计,我们可以统计模型或者轻度汇总层的表的引用系数来查看复用率。

03

01

名称规则

    主要是检查仓库任何一张表,能否看出处于什么层,或者什么域。每层没域都有自己的命名规则,还有历史表,拉链表,切片表都有自己的命名规则。

    另外很麻烦的一块就是编码,编码是否转码了,意思是否一致,这个需要开发过程中不停的验证。

04

01

作业拆分

    开始的模型设计可能比较粗放,是否有必要进行拆分,这样一个主题下一个业务过程可能有不同的模型表,好处就是仓库可能跑的更快,而不是需要等待数据完全到位后才跑。


3


    随着监管的越来越严格,数据治理越来越受到重视,关于数据治理体系框架也层出不穷,现简单介绍常见的几个框架,供大家参考,在具体实践中,一般是几个框架结合使用。

框架简介

     数据以及数据资产越来越受到重视,如何规范有效的管理企业的数据资产以及越来越受到重视。

    关于如何规范有效的管理数据,涉及组织架构、原则、过程和规则,以确保数据管理的各项职能得到正确的履行。根据管理切入的视角和侧重点不同,业界常见的对数据治理的定义已经在几十种,到目前为止DAMA(国际数据管理协会)、ISACA(国际信息系统审计和控制协会)、DGI(国际数据治理研究所)、IBM数据治理委员会和Gartner公司等权威机构提出的定义最具代表性,并被不同类型的企业接受和认可。

框架介绍

01

01

国际标准化组织ISO38500治理框架

    国际标准组织于2008年推出第一个IT治理的国际标准:ISO38500, 它的出标志着IT 治理从概念模糊的探讨阶段进入了正确认识的发展阶段,而且也标志着信息化正式进入IT 治理时代。

    ISO38500提出了IT治理框架(包括目标、原则和模型),并认为该框架同样适用于数据治理领域。

    在目标方面,ISO38500认为IT治理的目标就是促进组织高效、合理地利用IT

    在原则方面,ISO38500定义了IT治理的六个基本原则:职责、策略、采购、绩效、符合和人员行为,这些原则阐述了指导决策的推荐行为,每个原则描述了应该采取的措施,但并未说明如何、何时及由谁来实施这些原则。

   中国人喜欢标准,虽然这个关于数据治理没有详细说明。

02

01

DAMA数据治理框架

    DAMA认为数据治理是对数据资产管理行使权力和控制,包括规划、监控和执行。它还对数据治理和IT治理进行了区分:IT治理的对象是IT投资、IT应用组合和IT项目组合,而数据治理的对象是数据。

    DAMA的数据治理框架分两个,一个是功能要素,一个是环境。

    功能要素主要包括技术,环境主要是组织,角色,文化等等。

03

01

DGI

    国际数据治理研究所DGI的数据治理框架认为数据治理不同于IT治理,应建立独立的数据治理理论体系。DGI从组织、规则、流程三个层面,总结了数据治理的十大关键要素,创新地提出了DGI数据治理框架。DGI框架以一种非常直观的方式,展示了十个基本组件间的逻辑关系,形成了一个从方法到实施的自成一体的完整系统。组件按职能划分为三组:规则与协同工作规范、人员与组织结构、流程。

   DGI强调组织,人,流程,规则,其中人和组织上设立数据治理委员会。

04

01

IBM 数据治理框架

    IBM数据治理委员会结合数据的特性,针对性地提出了数据治理的成熟度模型

    在构建数据治理统一框架方面,提出了数据治理的要素模型并认为业务目标或成果是数据治理的最关键命题

    在要素模型中,有三个促成因素会影响业务目标实现,即组织结构和认知度、政策和数据相关责任者;在促成因素之外,必须重点关注数据治理的核心要素和支撑要素,具体包括数据质量管理、信息生命周期管理、信息安全和隐私、数据架构、分类和元数据,以及审计、日志和报告

05

01

Gartner数据治理体系框架

     Gartner数据治理体系框架认为,数据治理来源于IT治理的体系,IT治理来源公司治理的体系。

    有的公司是事业部制度,有的是集团制度,导致的结果就是集团的集中治理,事业部的分散治理。

    Gartne还认为标准是数据治理的组成部分,有数据定义标准,技术开发标准等等

06

01

DCMM数据治理体系框架

    DCMM(Data Management Capability Maturity Assessment Model,数据管理能力成熟度评估模型)是我国首个数据管理领域国家标准,国内很流行。

    DCMM将组织内部数据能力划分为八个重要组成部分,描述了每个组成部分的定义、功能、目标和标准。该标准适用于信息系统的建设单位,应用单位等进行数据管理时候的规划,设计和评估。也可以作为针对信息系统建设状况的指导、监督和检查的依据。

    DCMM国家标准结合数据生命周期管理各个阶段的特征,按照组织、制度、流程、技术对数据管理能力进行了分析、总结,提炼出组织数据管理的八大过程域,并对每项能力域进行了二级过程项(28个过程项)和发展等级的划分(5个等级)以及相关功能介绍和评定指标(441项指标)的制定。

  1. 数据战略:数据战略规划、数据战略实施、数据战略评估;

  2. 数据治理:数据治理组织、数据制度建设、数据治理沟通;

  3. 数据架构:数据模型、数据分布、数据集成与共享、元数据管理;

  4. 数据应用:数据分析、数据开放共享、数据服务;

  5. 数据安全:数据安全策略、数据安全管理、数据安全审计;

  6. 数据质量:数据质量需求、数据质量检查、数据质量分析、数据质量提升;

  7. 数据标准:业务数据、参考数据和主数据、数据元、指标数据;

  8. 数据生存周期:数据需求、数据设计和开放、数据运维、数据退役。

总结

今天分享的内容有点多,满满的干货,记得收藏学习或转发朋友圈哦!Day Day UP,努力和汗水总会能得到回报的。关注我们一起进步,我们下期见~~~

资源获取 获取Flink,Spark,程序员必备软件,hive,Hadoop,面试题,数据治理等资源请公众号后台回复关键词:flink,hive,hbase,数据治理,数据质量,机器学习等;也可以公众号菜单栏自行查看更多精彩专题。

HiveSQL优化方法与实践(全)


HBase快速入门(一)


下载资料:长按扫码回复 数仓


希望这篇文章可以帮到你~
欢迎大家点个在看,分享至朋友圈


人间真爱,在看在看在看~(疯狂暗示!)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存